from gensim.models import Word2Vec
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
import matplotlib.font_manager as fm

# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体字体支持中文
plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题

# 加载模型
model = Word2Vec.load("word2vec.model")

# 提取需要可视化的词汇和对应的词向量
words = list(model.wv.index_to_key)[:200]  # 选取前50个常见词汇
word_vectors = model.wv[words]

# 使用PCA将词向量降维到2D
pca = PCA(n_components=2)
word_vectors_2d = pca.fit_transform(word_vectors)

# 绘制图形
plt.figure(figsize=(10, 8))
plt.scatter(word_vectors_2d[:, 0], word_vectors_2d[:, 1], marker='o')

# 添加词汇标签
for i, word in enumerate(words):
    plt.annotate(word, xy=(word_vectors_2d[i, 0], word_vectors_2d[i, 1]))

plt.title("Word2Vec 词向量可视化 (2D PCA)")
plt.xlabel("PCA 组件 1")
plt.ylabel("PCA 组件 2")
plt.grid(True)
plt.show()
